package ar.edu.utn.frgp.Banco.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import ar.edu.utn.frgp.Banco.model.base.Operacion;
import ar.edu.utn.frgp.Banco.model.enums.Acreditacion;
import ar.edu.utn.frgp.Banco.model.enums.OrigenPlazoFijo;

@Entity(name = "plazosfijos")
public class PlazoFijo extends Operacion implements Serializable {

	private static final long serialVersionUID = 1L;

	@Column(name = "fechaalta")
	private Date fechaalta;

	@Column(name = "fechavencimiento")
	private Date fechavencimiento;

	@Column(name = "origen")
	private OrigenPlazoFijo origen;

	@OneToOne(targetEntity=Cuenta.class, fetch=FetchType.LAZY, mappedBy="nrocuenta")
	private Cuenta cuentaorigen;

	@Enumerated(EnumType.STRING)
	private Acreditacion acreditacion;

	@Column(name = "nrocuentadestino")
	private Integer nrocuentadestino;

	@Column(name = "monto")
	private double monto;

	@Column(name = "interes")
	private double interes;

	@Column(name = "tiempo")
	private Integer tiempo;

	public Acreditacion getAcreditacion() {
		return acreditacion;
	}

	public Cuenta getCuentaorigen() {
		return cuentaorigen;
	}

	public Date getFechaalta() {
		return fechaalta;
	}

	public Date getFechavencimiento() {
		return fechavencimiento;
	}

	public double getInteres() {
		return interes;
	}

	public double getMonto() {
		return monto;
	}

	public Integer getNrocuentadestino() {
		return nrocuentadestino;
	}

	public OrigenPlazoFijo getOrigen() {
		return origen;
	}

	public Integer getTiempo() {
		return tiempo;
	}

	public void setAcreditacion(Acreditacion acreditacion) {
		this.acreditacion = acreditacion;
	}

	public void setCuentaorigen(Cuenta cuentaorigen) {
		this.cuentaorigen = cuentaorigen;
	}

	public void setFechaalta(Date fechaalta) {
		this.fechaalta = fechaalta;
	}

	public void setFechavencimiento(Date fechavencimiento) {
		this.fechavencimiento = fechavencimiento;
	}

	public void setInteres(double interes) {
		this.interes = interes;
	}

	public void setMonto(double monto) {
		this.monto = monto;
	}

	public void setNrocuentadestino(Integer nrocuentadestino) {
		this.nrocuentadestino = nrocuentadestino;
	}

	public void setOrigen(OrigenPlazoFijo origen) {
		this.origen = origen;
	}

	public void setTiempo(Integer tiempo) {
		this.tiempo = tiempo;
	}
}
